Openscad permite hacer operaciones entre figuras. Por ejemplo, con difference() podemos restar de una pieza otra o varias. Por ejemplo, si tenemos las siguientes figuras:
color([0,0,1])cube([10,10,10],center=true); color([0,1,0])cube([20,20,20]);

Con la instrucción difference podemos restar de la azul la verde:
difference(){
color([0,0,1])cube([10,10,10],center=true);
color([0,1,0])cube([20,20,20]);
}
El resultado es:

Si queremos restar de la verde la azul, hay que poner primero la figura verde en el código y después la azul:
difference(){
color([0,1,0])cube([20,20,20]);
color([0,0,1])cube([10,10,10],center=true);
}
El resultado es:

Si dentro de las llaves de diference hay más de dos piezas, de la primera, se trestan todas las desmás. Por ejemplo con este código:
color([0,1,0])cube([20,20,20]); color([0,0,1])cube([10,10,10],center=true); color([0,0,1])translate([20,0,0])cube([10,10,10],center=true); color([0,0,1])translate([20,20,0])cube([10,10,10],center=true); color([0,0,1])translate([0,20,0])cube([10,10,10],center=true);
Que corresponde a la siguiente figura

Si aplicamos difference():
difference(){
color([0,1,0])cube([20,20,20]);
color([0,0,1])cube([10,10,10],center=true);
color([0,0,1])translate([20,0,0])cube([10,10,10],center=true);
color([0,0,1])translate([20,20,0])cube([10,10,10],center=true);
color([0,0,1])translate([0,20,0])cube([10,10,10],center=true);
}
El resultado es:

Si quisiéramos restar de las figuras azules la verde, primero deberíamos unir todas las figuras azules en una sola con union():
difference(){
union(){
color([0,0,1])cube([10,10,10],center=true);
color([0,0,1])translate([20,0,0])cube([10,10,10],center=true);
color([0,0,1])translate([20,20,0])cube([10,10,10],center=true);
color([0,0,1])translate([0,20,0])cube([10,10,10],center=true);
}
color([0,1,0])cube([20,20,20]);
}
El resultado es:

Entre dos puntos negros hay 10mm











